查看原文
其他

来一张微信好友头像全家福吧

2017-04-24 hoptop 生信媛


当我逛简书的时候(偶尔也要娱乐一下),突然看到一篇非常有趣的文章——.于是我就花了一点时间娱乐一下自己。

前期准备

首先你需要安装了Python3,

然后确保自己安装了以下库:

  • itchat: API for Wechat. 微信个人号接口(支持文件、图片上下载)、微信机器人及命令行微信。三十行即可自定义个人号机器人

  • pillow: Python的图片操作库

安装代码:

pip3 install itchat pip3 install pillow

原理

使用itchat访问微信网页客户端,接着爬通讯录好友的头像的图片,之后使用PIL对图片进行拼接,最后用itchat把结果发送到文件助手。

itchat可以好好折腾一下,及时回复男/女朋友的信息,说不定就解决了一场危机。

代码:

源代码源自简书作者[].
我在源代码部分增加了为指定目标文件夹部分filepath,并增加注释行,便于理解。

# 导入itchat用于登录微信,导入math用于计算图片大小 # 导入PIL用于图片修剪和拼接, 导入os用于获取下载的图片信息 import itchat import math import PIL.Image as Image import os # 修改filepath为指定的目录 filepath = "存放图片的目录" # 登录,如果你是Windows,用下面这行代码,然后注释Linux itchat.auto_login() # 如果你用的是Linux,用下面这行代码,然后注释Windows itchat.auto_login(enableCmdQR=1) # 读取好友 friends = itchat.get_friends(update=True)[0:] user = friends[0]["UserName"] # 获取好友头像 num = 0 for i in friends:    img = itchat.get_head_img(userName=i["UserName"])    fileImage = open(filepath + "/" + str(num) + ".jpg","wb")    fileImage.write(img)    fileImage.close()    num += 1 # 利用os.listdir从文件路径中读取存放的图片 ls = os.listdir(filepath) # 根据分辨率,定义图片大小 each_size = int(math.sqrt(float(640*640)/len(ls))) lines = int(640/each_size) image = Image.new('RGBA',(640,640)) x = 0 y = 0 # 修改源图片尺寸,并拼接 for i in range(0,len(ls) + 1):    try:        img = Image.open(filepath + "/" + str(i) + ".jpg")    except IOError:        print("Error")    else:        img = img.resize((each_size, each_size), Image.ANTIALIAS)        image.paste(img, (x * each_size, y * each_size))    x += 1    if x == lines:        x = 0        y += 1 # 保存图片 image.save(filepath + "/" + "all.jpg") # 用文件助手发送到手机微信端 itchat.send_image(filepath +"/"+"all.jpg","filehelper")

运行方法:

将上述代码保存为friends.py,然后在终端下用python friends.py运行就好了。

效果图

最后放上效果图,为了美观,我删除了部分头像。有没有看到自己的头像呢?

阅读原文,看源代码。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存